import java.util.*;
public class Main {


    public static void main(String[] args) {

        
    }


    public static void main2(String[] args) {
        int[] nums = {3,-1,-1,2};
        System.out.println(largestSumAfterKNegations(nums, 3));
        
    }
    public static int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int ret = 0;
        int min = Integer.MAX_VALUE;
        for(int i = 0; i < nums.length; i++){
            if(nums[i] < 0 && k > 0){
                k--;
                nums[i] = -nums[i];
            }
            min = Math.min(min,nums[i]);
            ret += nums[i];
        }
        if(k % 2 == 1) {
            ret -= 2*min;
        }
        return ret;
    }

    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int start = in.nextInt();
            int target = in.nextInt();
            int[] ret = new int[target - start + 1];
            Arrays.fill(ret,Integer.MAX_VALUE);//数组其他值赋为最大整数
            ret[0] = 0;
            for(int i = 0; i < ret.length; i++) {
                // 说明通过前面的点不能直接到达这，跳过这个点
                if(ret[i] == Integer.MAX_VALUE) {
                    continue;
                }
                for(int j = 2; j <= (i + start)/2; j++) {
                    if(i + j >= ret.length) break;// 越界，直接退出
                    if((i + start) % j == 0) {
                        // 是他的约数，重新赋值数组中 当前数加约数的项的值
                        ret[j + i] = Math.min(ret[i] + 1,ret[j + i]);

                    }
                    // 最后一项已经能到达了，直接返回
                    if(ret[ret.length - 1] < Integer.MAX_VALUE) {
                        System.out.print(ret[ret.length - 1]);
                        return ;
                    }
                }
            }
            if(ret[ret.length - 1] == Integer.MAX_VALUE) {
                System.out.print(-1);
            }else {
                System.out.print(ret[ret.length - 1]);
            }
        }
    }
}
